﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using DomainModel.Abstract;
using DomainModel.Entities;
using System.Data.Linq;

namespace DomainModel.Concrete
{
    // Implementation of the QuestionnaireEntry section of the database.
    // The middle layer of the DAL.
    class SqlQuestionnaireEntriesRepository : IQuestionnaireEntriesRepository
    {
        private Table<QuestionnaireEntry> questionnaireEntriesTable;

        public SqlQuestionnaireEntriesRepository(string connectionString)
        {
            questionnaireEntriesTable = (new DataContext(connectionString)).GetTable<QuestionnaireEntry>();
        }

        public IQueryable<QuestionnaireEntry> QuestionnaireEntries
        {
            get { return questionnaireEntriesTable; }
        }

        public void SaveQuestionnaireEntry(QuestionnaireEntry questionnaireEntry)
        {
            if (questionnaireEntry.QuestionnaireEntryID == 0)
            {
                questionnaireEntriesTable.InsertOnSubmit(questionnaireEntry);
            }
            else
            {
                questionnaireEntriesTable.Attach(questionnaireEntry);
                questionnaireEntriesTable.Context.Refresh(RefreshMode.KeepCurrentValues, questionnaireEntry);
            }

            questionnaireEntriesTable.Context.SubmitChanges();
        }

        public void DeleteQuestionnaireEntry(QuestionnaireEntry questionnaireEntry)
        {
            questionnaireEntriesTable.DeleteOnSubmit(questionnaireEntry);
            questionnaireEntriesTable.Context.SubmitChanges();
        }
    }
}
